﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BLLGasteiros.DAL;

namespace BLLGasteiros.BLL
{
    public class BLLCategoria: BLLGenerico
    {
        public BLLCategoria(GasteirosDataContext contexto) : base(contexto) { }
        public BLLCategoria() : this(new GasteirosDataContext()) { }

        public List<GS_Categoria> TraerCategorias()
        {
            return Contexto.GS_Categorias.OrderBy(c => c.Nombre).ToList();
        }

        public bool Existe(string nombre)
        {
            return Contexto.GS_Categorias.Where(c => c.Nombre.ToLower().Equals(nombre.ToLower())).Count() > 0;
        }

        public GS_Categoria Traer(int idCategoria)
        {
            return Contexto.GS_Categorias.Where(c => c.IdCategoria == idCategoria).FirstOrDefault();
        }

        public void CargarCategoria(GS_Categoria nuevaCategoria)
        {
            if (Existe(nuevaCategoria.Nombre))
                throw new Exception(nuevaCategoria.Nombre + " ya existe");

            Contexto.GS_Categorias.InsertOnSubmit(nuevaCategoria);
        }

        public void EditarCategoria(GS_Categoria categoria)
        {
            GS_Categoria vieja = Traer(categoria.IdCategoria);

            vieja.Nombre = categoria.Nombre;

            if (categoria.IdCategoriaPadre == null)
                vieja.GS_Categoria1 = null;
            else
                vieja.GS_Categoria1 = Traer((int)categoria.IdCategoriaPadre);

            Guardar();
        }

        public void EliminarCategoria(GS_Categoria categoria)
        {
            GS_Categoria vieja = Traer(categoria.IdCategoria);
            Contexto.GS_Categorias.DeleteOnSubmit(vieja);
            Guardar();
        }
    }
}
